home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / Ant Movie Catalog 3.5.0.2 / amc_install.exe / {app} / Scripts / dvdempire.ifs < prev    next >
Text File  |  2005-03-13  |  7KB  |  198 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=dmitry501
  8. Title=dvdempire.com
  9. Description=Movie importation script for www.dvdempire.com
  10. Site=www.dvdempire.com
  11. Language=EN
  12. Version=
  13. Requires=3.5.0
  14. Comments=
  15. License=This program is free software; you can redistribute it and/or modify it under the  terms of the GNU General Public License as published by the Free Software Foundation;  either version 2 of the License, or (at your option) any later version. |
  16. GetInfo=1
  17.  
  18. [Options]
  19.  
  20. ***************************************************)
  21.  
  22. program From_dvdempire;
  23. var
  24.   MovieName: string;
  25.   MovieName2: string;
  26. // -------------------------------------------------------------------------------------------------------
  27. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  28. var
  29.   i: Integer;
  30. begin
  31.   result := -1;
  32.   if StartAt < 0 then
  33.     StartAt := 0;
  34.   for i := StartAt to List.Count-1 do
  35.     if Pos(Pattern, List.GetString(i)) <> 0 then
  36.     begin
  37.       result := i;
  38.       Break;
  39.     end;
  40. end;
  41. // -------------------------------------------------------------------------------------------------------
  42. function GetLines(Page: TStringList; LineNr: Integer): String;
  43. var Value, Line: String;
  44.     StartPos : Integer;
  45. begin
  46.   Value := '';
  47.   Line := Page.GetString(LineNr);
  48.   If Pos(' ',Line) > 0 Then Begin
  49.     Value := StringReplace(Line, 'ò', '');
  50.     HTMLDecode(Value);
  51.     HTMLRemoveTags(Value);
  52.     repeat
  53.       LineNr := LineNr + 1;
  54.       Line := Page.GetString(LineNr);
  55.       If Pos(' ',Line) > 0 Then Begin
  56.         Value := Value + ',' + StringReplace(Line, 'ò', '');
  57.         HTMLDecode(Value);
  58.         HTMLRemoveTags(Value);
  59.       end;
  60.     until Pos(' ',Line) < 1
  61.   end;
  62.   result := Trim(Value);
  63. end;
  64. // -------------------------------------------------------------------------------------------------------
  65. procedure GetInfo(Page: TStringList; ItemID: String);
  66. var Line, Value : String;
  67.     LineNR, StartPos : Integer;
  68. begin
  69.   // URL
  70.   SetField(fieldURL,'http://www.dvdempire.com/Exec/v4_item.asp?item_id=' + ItemID);
  71.   //Rating
  72.   LineNr := FindLine('<b>Rating:</b>', Page, 0);
  73.   if LineNr > -1 then
  74.   begin
  75.     Line := Page.GetString(LineNr+3);
  76.     StartPos := Pos('(<b>',Line)+4;
  77.     Value := copy(Line, StartPos, pos('</b>', Line) - StartPos);
  78.     SetField(fieldRating,Value);
  79.   end;
  80.   // Year
  81.   LineNr := FindLine('<b>Production Year:</b>', Page, 0);
  82.   if LineNr > -1 then
  83.   begin
  84.     Line := Page.GetString(LineNr);
  85.     StartPos := Pos('</b>',Line)+5;
  86.     Value := Copy(Line, StartPos,4);
  87.     SetField(fieldYear, Value);
  88.   end;
  89.   // Director
  90.   LineNr := FindLine('<b>Directors:</b>', Page, 0);
  91.   if LineNr > -1 then
  92.   begin
  93.     Value := GetLines(Page, LineNr+1);
  94.     SetField(fieldDirector, Value);
  95.   end;
  96.   // Producer
  97.   LineNr := FindLine('<b>Producers:</b>', Page, 0);
  98.   if LineNr > -1 then
  99.   begin
  100.     Value := GetLines(Page, LineNr+1);
  101.     SetField(fieldProducer, Value);
  102.   end;
  103.   // Actors
  104.   LineNr := FindLine('<b>Actors:</b>', Page, 0);
  105.   if LineNr > -1 then
  106.   begin
  107.     Value := GetLines(Page, LineNr+1);
  108.     SetField(fieldActors, Value);
  109.   end;
  110.    // Description
  111.   LineNr := FindLine('<b> Synopsis</b>', Page, 0);
  112.   if LineNr > -1 then
  113.   begin
  114.     Value := Page.GetString(LineNr + 16)+Page.GetString(LineNr + 17)+Page.GetString(LineNr + 18);
  115.     Value:=StringReplace(Value, '>i<', '> <');
  116.     HTMLDecode(Value);
  117.     HTMLRemoveTags(Value);
  118.     SetField(fieldDescription,Value);
  119.   end;
  120.   // Picture
  121.   Line := 'http://images.dvdempire.com/gen/movies/' + ItemID + 'h.jpg';
  122.   GetPicture(Line);
  123. end;
  124. // -------------------------------------------------------------------------------------------------------
  125. procedure AnalyzePage(Address: string);
  126. var
  127.   Page: TStringList;
  128.   LineNr, StartPos, EndPos, L: Integer;
  129.   Line: string;
  130.   ItemID, MovieAddress, MovieTitle : string;
  131. begin
  132.   PickTreeClear;
  133.   Page := TStringList.Create;
  134.   Page.Text := GetPage(Address);
  135.   LineNr := FindLine('<title>DVD Empire - Item -', Page, 0);
  136.   if LineNr >-1 then begin
  137.     LineNr := FindLine('item_id', Page, 0);
  138.     Line := Trim(Page.GetString(LineNr));
  139.     StartPos := pos('item_id=', Line) + 8;
  140.     ItemID := copy(Line, StartPos, pos('&tab=', Line) - StartPos);
  141.     GetInfo(Page,ItemID);
  142.   end else begin
  143.     LineNr := FindLine('Matches Found<br>', Page, 0);
  144.     if LineNr >-1 then begin
  145.       Line := Page.GetString(LineNr);
  146.       StartPos := pos('<b>', Line) + 3;
  147.       L := StrToInt('0'+ Copy(Line, StartPos, pos('</b>', Line) - StartPos),1);
  148.       PickTreeAdd(IntToStr(L)+' Matches found', '');
  149.       If L>0 Then begin
  150.         // Find Films
  151.           LineNr := FindLine('searchID=', Page, LineNr);
  152.           LineNr := LineNr + 1;
  153.         repeat
  154.           LineNr := FindLine('searchID=', Page, LineNr);
  155.           if LineNr >-1 then begin
  156.             Line := Trim(Page.GetString(LineNr));
  157.             LineNr := LineNr + 1;
  158.             If pos('<img src="', Line) <1 Then Begin
  159.               StartPos := pos('item_id=', Line) + 8;
  160.               ItemID := copy(Line, StartPos, pos('">', Line) - StartPos);
  161.               MovieAddress := 'http://www.dvdempire.com/Exec/v4_item.asp?item_id=' + ItemID;
  162.               StartPos := pos('">', Line) + 2;
  163.               MovieTitle := copy(Line, StartPos, 500);
  164.               HTMLDecode(Movietitle);
  165.               HTMLRemoveTags(MovieTitle);
  166.               PickTreeAdd(MovieTitle, MovieAddress);
  167.             end;
  168.           end;
  169.         until (LineNr <1 );
  170.       end;
  171.     end;
  172.     Page.Free;
  173.     if PickTreeExec(Address) then
  174.      begin
  175.       Page := TStringList.Create;
  176.       Page.Text := GetPage(Address);
  177.       ItemID :=copy(Address, 51, 8);
  178.       GetInfo(Page,ItemID);
  179.     end;
  180.   end;
  181.   //DisplayResults;
  182. end;
  183. // -------------------------------------------------------------------------------------------------------
  184. // Begin program
  185. begin
  186.   PickListClear;
  187.   MovieName := GetField(fieldOriginalTitle);
  188.   if MovieName = '' then MovieName := GetField(fieldTranslatedTitle);
  189.   if Input('Import from www.dvdempire.com', 'Enter the title of the movie:', MovieName) then begin
  190.       MovieName2:=MovieName;
  191.       MovieName:=StringReplace(MovieName, 'Æ', Chr(39));
  192.       MovieName:=AnsiLowerCase(MovieName);
  193.       MovieName:=AnsiUpFirstLetter(MovieName);
  194.       if pos('The ', MovieName)=1 then MovieName:=StringReplace(MovieName, 'The ', '');
  195.       AnalyzePage('http://www.dvdempire.com/Exec/v5_search_item.asp?string='+UrlEncode(MovieName));
  196.   end
  197. end.
  198.